/**
 * 
 */
package com.india.metro.delhi;

import javax.xml.bind.annotation.XmlElement;

import com.india.RouteCode;
import com.india.StopNode;
import com.sangharsh.core.algo.location.Location;

/**
 * @author Sangharsh
 *
 */
public enum DelhiMetroNode implements StopNode{
	DWARKA_SEC_9(1,"dwarka sec 9", 28.574591387465976, 77.06557273864746,true),
	DWARKA_SEC_10(2,"dwarka sec 10", 28.581130060582026, 77.05748319625854,true),
	DWARKA_SEC_11(3,"dwarka sec 11", 28.586763922616015, 77.04943656921387,true),
	DWARKA_SEC_12(4,"dwarka sec 12", 28.592265596877702, 77.04070329666138,true),
	DWARKA_SEC_13(5,"dwarka sec 13", 28.597182945589953, 77.03351497650146,true),
	DWARKA_SEC_14(6,"dwarka sec 14", 28.602476845454508, 77.02628374099731,true),
	DWARKA(7,"dwarka", 28.614966377783325, 77.02272176742554,true),
	DWARKA_MOR(8,"dwarka mor", 28.61939292945745, 77.03317165374756,true),
	NAWADA(9,"nawada", 28.619920335939614, 77.0446515083313,true),
	UTTAM_NAGAR_WEST(10,"uttam nagar west", 28.621653224300577, 77.05593824386597,true),
	UTTAM_NAGAR_EAST(11,"uttam nagar east", 28.624610369910606, 77.06499338150024,true),
	JANAK_PURI_WEST(12,"janak puri west", 28.62946970216603, 77.07782506942749,true),
	JANAK_PURI_EAST(13,"janak puri east", 28.633123470491956, 77.08655834197998,true),
	TILAK_NAGAR(14,"tilak nagar", 28.636984273017777, 77.09606409072876,true),
	SUBHASH_NAGAR(15,"subhash nagar", 28.640468289941264, 77.10490465164185,true),
	TAGORE_GARDEN(16,"tagore garden", 28.643952191167546, 77.11282253265381,true),
	RAJOURI_GARDEN(17,"rajouri garden", 28.649036596102846, 77.12260723114014,true),
	RAMESH_NAGAR(18,"ramesh nagar", 28.652670853009216, 77.13155508041382,true),
	MOTI_NAGAR(19,"moti nagar", 28.657717177029806, 77.14224100112915,true),
	KIRTI_NAGAR(20,"kirti nagar", 28.654572667819195, 77.15157508850098,true),
	SHADIPUR(21,"shadipur", 28.651522215475723, 77.15811967849731,true),
	PATEL_NAGAR(22,"patel nagar", 28.645213899828587, 77.16910600662231,true),
	RAJENDRA_PLACE(23,"rajendra place", 28.642520980882544, 77.17813968658447,true),
	KAROL_BAGH(24,"karol bagh", 28.64421583303755, 77.18854665756226,true),
	JHANDEWALAN(25,"jhandewalan", 28.64438531674695, 77.1998119354248,true),
	RK_ASHRAM_MARG(26,"rk ashram marg", 28.639300686348157, 77.2084379196167,true),
	RAJIV_CHOWK(27,"rajiv chowk", 28.632878634322783, 77.21835136413574,true),
	BARAKHAMBA(28,"barakhamba", 28.630712751027318, 77.2235655784607,true),
	MANDI_HOUSE(29,"mandi house", 28.626004154882608, 77.23457336425781,true),
	PRAGATI_MAIDAN(30,"pragati maidan", 28.62338608406115, 77.24255561828613,true),
	INDRAPRASTHA(31,"indraprastha", 28.620598426095576, 77.24976539611816,true),
	NEW_DELHI(32,"new delhi", 28.643104766383157, 77.22240686416626,true),
	CHAWRI_BAZAR(33,"chawri bazar", 28.649601514769948, 77.22605466842651,true),
	CHANDNI_CHOWK(34,"chandni chowk", 28.657999613360836, 77.2299599647522,true),
	KASHMERE_GATE(35,"kashmere gate", 28.66773378712926, 77.22800731658936,true),
	SHASTRI_PARK(36,"shastri park", 28.668242123395387, 77.2498619556427,true),
	SEELAMPUR(37,"seelampur", 28.67023779007751, 77.26728558540344,true),
	WELCOME(38,"welcome", 28.67197926060769, 77.27805733680725,true),
	SHAHDARA(39,"shahdara", 28.673494787080898, 77.28981614112854,true),
	CIVIL_LINES(40,"civil lines", 28.676939939609316, 77.2250247001648,true),
	VIDHAN_SABHA(41,"vidhan sabha", 28.687895901003426, 77.22180604934692,true),
	VISHWAVIDYALAYA(42,"vishwavidyalaya", 28.694954547265898, 77.21461772918701,true),
	TIS_HAZARI(43,"tis hazari", 28.667564341159256, 77.21648454666138,true),
	PUL_BANGASH(44,"pul bangash", 28.666397039254203, 77.20738649368286,true),
	PRATAP_NAGAR(45,"pratap nagar", 28.666735934695136, 77.19893217086792,true),
	INDER_LOK(46,"inder lok", 28.673212392505512, 77.17041492462158,true),
	KANHAIYA_NAGAR(47,"kanhaiya nagar", 28.682888679413924, 77.16442823410034,true),
	KESHAV_PURAM(48,"keshav puram", 28.688422963031822, 77.1613597869873,true),
	NETAJI_SUBHASH_PLACE(49,"netaji subhash place", 28.696309752885416, 77.15258359909058,true),
	KOHAT_ENCLAVE(50,"kohat enclave", 28.698003735235147, 77.14052438735962,true),
	PITAM_PURA(51,"pitam pura", 28.703047875850444, 77.1324348449707,true),
	ROHINI_EAST(52,"rohini east", 28.707743601648687, 77.12570786476135,true),
	ROHINI_WEST(53,"rohini west", 28.715224332635756, 77.11498975753784,true),
	RITHALA(54,"rithala", 28.720888630830903, 77.10672855377197,true),
	PATEL_CHOWK(55,"patel chowk", 28.623254237041184, 77.2143816947937,true),
	CENTRAL_SECRETARIAT(56,"central secretariat", 28.615173582236995, 77.2120213508606,true),
	SHASTRI_NAGAR(57,"shastri nagar", 28.67006834815653, 77.18189477920532,true),
	MANSAROVAR_PARK(58,"mansarovar park", 28.675480940757172, 77.30110287666321,true),
	JHIL_MIL(59,"jhil mil", 28.67597041360487, 77.31237888336182,true),
	DILSHAD_GARDEN(60,"dilshad garden", 28.675857458535305, 77.32177734375,true),
	GTB_NAGAR(61,"g.t.b. nagar", 28.69826724113654, 77.20706462860107,true),
	MODEL_TOWN(62,"model town", 28.70263381376593, 77.19395399093628,true),
	AZADPUR(63,"azadpur", 28.707056664942495, 77.18037128448486,true),
	ADARSH_NAGAR(64,"adarsh nagar", 28.716616912793214, 77.17058658599854,true),
	JAHANGIRPURI(65,"jahangirpuri", 28.725894034317516, 77.1625828742981,true),
	YAMUNA_BANK(66,"yamuna bank", 28.6232730723399, 77.26787567138672,true),
	AKSHARDHAM(67,"akshardham", 28.617904875459132, 77.27946281433105,true),
	MAYUR_VIHAR_I(68,"mayur vihar-i", 28.604341892551826, 77.28941917419434,true),
	MAYUR_VIHAR_I_EXT(69,"mayur vihar-i ext", 28.594281549268697, 77.29454755783081,true),
	NEW_ASHOK_NAGAR(70,"new ashok nagar", 28.588968395158748, 77.30177879333496,true),
	NOIDA_SEC_15(71,"noida sec 15", 28.585200038001528, 77.31149911880493,true),
	NOIDA_SEC_16(72,"noida sec 16", 28.577945570271133, 77.31806516647339,true),
	NOIDA_SEC_18(73,"noida sec 18", 28.57059637851567, 77.32634782791138,true),
	BOTANICAL_GARDEN(74,"botanical garden", 28.563943975150988, 77.33435153961182,true),
	GOLF_COURSE(75,"golf course", 28.56722311605278, 77.34615325927734,true),
	NOIDA_CITY_CENTRE(76,"noida city centre", 28.574591387465976, 77.35603451728821,true),
	LAXMI_NAGAR(77,"laxmi nagar", 28.630449075226373, 77.27755308151245,true),
	NIRMAN_VIHAR(78,"nirman vihar", 28.63666411430729, 77.28673696517944,true),
	PREET_VIHAR(79,"preet vihar", 28.64157938451968, 77.29529857635498,true),
	KARKAR_DUMA(80,"karkar duma", 28.648509335934747, 77.30555534362793,true),
	ANAND_VIHAR(81,"anand vihar", 28.64698403266555, 77.31598377227783,true),
	ASHOK_PARK_MAIN(82,"ashok park main", 28.671630968817215, 77.15509414672852,true),
	PUNJABI_BAGH(83,"punjabi bagh", 28.67296764992449, 77.14597463607788,true),
	SHIVAJI_PARK(84,"shivaji park", 28.67498205261668, 77.13043928146362,true),
	MADI_PUR(85,"madi pur", 28.675961000687057, 77.11956024169922,true),
	PASCHIM_VIHAR_EAST(86,"paschim vihar (east)", 28.67733527773468, 77.11267232894897,true),
	PASCHIM_VIHAR_WEST(87,"paschim vihar (west)", 28.678709536752805, 77.10207223892212,true),
	PEERA_GARHI(88,"peera garhi", 28.679763750628133, 77.0927381515503,true),
	UDYOG_NAGAR(89,"udyog nagar", 28.68064852908386, 77.08027124404907,true),
	SURAJMAL_STADIUM(90,"surajmal stadium", 28.681533300065336, 77.0740270614624,true),
	NANGLOI(91,"nangloi", 28.68241806357246, 77.06465005874634,true),
	NANGLOI_RLY_STATION(92,"nangloi rly. station", 28.682154517777473, 77.05615282058716,true),
	RAJDHANI_PARK(93,"rajdhani park", 28.68219216721737, 77.04396486282349,true),
	MUNDKA(94,"mundka", 28.682342764841568, 77.03046798706055,true),
	UDYOG_BHAWAN(95,"udyog bhawan", 28.611538026577733, 77.21242904663086,true),
	RACE_COURSE(96,"race course",  28.597540904520816, 77.2113561630249,true),
	JORBAGH(97,"jorbagh", 28.587178442349067, 77.21260070800781,true),
	INA(98,"ina", 28.575100174884952, 77.20938205718994,true),
	AIIMS(99,"aiims", 28.568900338280468, 77.207772731781,true),
	GREEN_PARK(100,"green park", 28.559797788672846, 77.20689296722412,true),
	HAUZ_KHAS(101,"hauz khas",28.543513003567337, 77.20682859420776,true),
	MALVIYA_NAGAR(102,"malviya nagar", 28.528620776366267, 77.20498323440552,true),
	SAKET(103,"saket", 28.520570557123484, 77.2015929222107,true),
	QUTAB_MINAR(104,"qutab minar", 28.51278369469634, 77.18584299087524,true),
	CHHATTARPUR(105,"chhattarpur",28.50688188812401, 77.17504978179932,true),
	SULTANPUR(106,"sultanpur", 28.49928259022298, 77.16138124465942,true),
	GHITORNI(107,"ghitorni", 28.49381377421105, 77.1491289138794,true),
	ARJANGARH(108,"arjangarh", 28.480857206978452, 77.12591171264648,true),
	GURU_DRONACHARYA(109,"guru dronacharya", 28.481724799718293, 77.10232973098755,true),
	SIKANDARPUR(110,"sikandarpur",28.481253282809096, 77.09288835525513,true),
	M_G_ROAD(111,"m g road", 28.47963124856442, 77.080078125,true),
	IFFCO_CHOWK(112,"iffco chowk", 28.47191681452759, 77.07255721092224,true),
	HUDA_CITY_CENTRE(113,"huda city centre", 28.4591179107783, 77.07257866859436,true),
	DWARKA_SEC_8(114,"dwarka sec 8", 28.565621249641804, 77.06709623336792,true),
	DWARKA_SEC_21(115,"dwarka sec 21", 28.55216460923648, 77.05816984176636,true),
	KHAN_MARKET(116,"khan market", 28.602505103990865, 77.22815752029419,true),
	JLN_STADIUM(117,"jln stadium", 28.59040033546555, 77.23304986953735,true),
	JANGPURA(118,"jangpura", 28.583579602901626, 77.23931550979614,true),
	LAJPAT_NAGAR(119,"lajpat nagar", 28.57055868902969, 77.23644018173218,true),
	MOOLCHAND(120,"moolchand", 28.56403820476367, 77.23431587219238,true),
	KAILASH_COLONY(121,"kailash colony", 28.55536872726081, 77.24197626113892,true),
	NEHRU_PLACE(122,"nehru place", 28.551467229452243, 77.25173950195312,true),
	KALKAJI_MANDIR(123,"kalkaji mandir", 28.549450456517704, 77.25914239883423,true),
	GOVIND_PURI(124,"govind puri", 28.54439893049065, 77.26435661315918,true),
	OKHLA(125,"okhla", 28.543079462144817, 77.27510690689087,true),
	JASOLA_APOLLO(126,"jasola apollo", 28.538169009744195, 77.2832179069519,true),
	SARITA_VIHAR(127,"sarita vihar", 28.528705611468762, 77.2883141040802,true),
	MOHAN_ESTATE(128,"mohan estate", 28.519609014431918, 77.29453682899475,true),
	TUGHLAKABAD(129,"tughlakabad", 28.502469459203954, 77.2993540763855,true),
	BADARPUR(130,"badarpur", 28.49783055291404, 77.30059862136841,true),
	KAUSHAMBI(131,"kaushambi", 28.645797670342223, 77.31894493103027,true), //suggestive
	VAISHALI(132,"vaishali", 28.64963917590622, 77.33930826187134, true),
	
	SHIVAJI_STADIUM(133,"Shivaji Stadium", 28.62901,77.21190, true),
	DHAULA_KUAN(134,"Dhaula Kuan", 28.59176,77.16145, true),
	DELHI_AERO_CITY(135,"Delhi Aero City", 28.54879,77.12074, true),
	IGI_AIRPORT(136,"IGI Airport", 28.55482,77.08780, true)
	;
	// Bus Nodes
	@XmlElement
	private int id;
	@XmlElement
	private String name;
	@XmlElement
	private double longitude;
	@XmlElement
	private double latitude;
	@XmlElement
	private boolean active;
	private RouteCode routeCode;

	DelhiMetroNode(int id, String name, double latitude, double longitude, boolean active) {
		this.id = id;
		this.name = name;
		this.latitude = latitude;
		this.longitude = longitude;
		this.active = active;
	}

	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	public double getLongitude() {
		return longitude;
	}

	public double getLatitude() {
		return latitude;
	}

	public String getCode() {
		return this.toString();
	}

	public boolean isActive() {
		return active;
	}
	
	@Override
	public RouteCode getRouteCode() {
		return routeCode;
	}

	@Override
	public void setRouteCode(RouteCode routeCode) {
		this.routeCode = routeCode;
	}

	public static DelhiMetroNode lookupById(int id){
		for(DelhiMetroNode node : values()){
			if(node.getId() == id){
				return node;
			}
		}
		return null;
	}
	@Override
	public Location getLocation(){
		return Location.getLocation(this.latitude, this.longitude);
	}
}
